<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: pcl::search::OrganizedNeighbor&lt; PointT &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classpcl_1_1search_1_1_organized_neighbor.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">类</a> &#124;
<a href="#pub-types">Public 类型</a> &#124;
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pro-methods">Protected 成员函数</a> &#124;
<a href="#pro-attribs">Protected 属性</a> &#124;
<a href="classpcl_1_1search_1_1_organized_neighbor-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">pcl::search::OrganizedNeighbor&lt; PointT &gt; 模板类 参考</div>  </div>
</div><!--header-->
<div class="contents">

<p><a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html" title="OrganizedNeighbor is a class for optimized nearest neigbhor search in organized point clouds.">OrganizedNeighbor</a> is a class for optimized nearest neigbhor search in organized point clouds.  
 <a href="classpcl_1_1search_1_1_organized_neighbor.html#details">更多...</a></p>

<p><code>#include &lt;<a class="el" href="organized_8h_source.html">organized.h</a>&gt;</code></p>
<div class="dynheader">
类 pcl::search::OrganizedNeighbor&lt; PointT &gt; 继承关系图:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classpcl_1_1search_1_1_organized_neighbor.png" usemap="#pcl::search::OrganizedNeighbor_3C_20PointT_20_3E_map" alt=""/>
  <map id="pcl::search::OrganizedNeighbor_3C_20PointT_20_3E_map" name="pcl::search::OrganizedNeighbor_3C_20PointT_20_3E_map">
<area href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this." alt="pcl::search::Search&lt; PointT &gt;" shape="rect" coords="0,0,250,24"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
类</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpcl_1_1search_1_1_organized_neighbor_1_1_entry.html">Entry</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:a7714077cc3161976adb54020a53abea0"><td class="memItemLeft" align="right" valign="top"><a id="a7714077cc3161976adb54020a53abea0"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:a7714077cc3161976adb54020a53abea0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76ce463b7ebb9a91f7a4e2ed3ccaf38b"><td class="memItemLeft" align="right" valign="top"><a id="a76ce463b7ebb9a91f7a4e2ed3ccaf38b"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudPtr</b></td></tr>
<tr class="separator:a76ce463b7ebb9a91f7a4e2ed3ccaf38b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af95958db6b6f72ced42ecfe78cdad9b2"><td class="memItemLeft" align="right" valign="top"><a id="af95958db6b6f72ced42ecfe78cdad9b2"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudConstPtr</b></td></tr>
<tr class="separator:af95958db6b6f72ced42ecfe78cdad9b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d5047e18fbe48380dbdcb43e7ef1838"><td class="memItemLeft" align="right" valign="top"><a id="a5d5047e18fbe48380dbdcb43e7ef1838"></a>
typedef boost::shared_ptr&lt; const std::vector&lt; int &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>IndicesConstPtr</b></td></tr>
<tr class="separator:a5d5047e18fbe48380dbdcb43e7ef1838"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa7a075a730bf3bdae152885dcda644d0"><td class="memItemLeft" align="right" valign="top"><a id="aa7a075a730bf3bdae152885dcda644d0"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html">pcl::search::OrganizedNeighbor</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:aa7a075a730bf3bdae152885dcda644d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b300f3ac7854db8b854fde16844d886"><td class="memItemLeft" align="right" valign="top"><a id="a5b300f3ac7854db8b854fde16844d886"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html">pcl::search::OrganizedNeighbor</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:a5b300f3ac7854db8b854fde16844d886"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1search_1_1_search"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1search_1_1_search')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1search_1_1_search.html">pcl::search::Search&lt; PointT &gt;</a></td></tr>
<tr class="memitem:a24c22de8c0cfcedbbab42e3c25aa41f7 inherit pub_types_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="a24c22de8c0cfcedbbab42e3c25aa41f7"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:a24c22de8c0cfcedbbab42e3c25aa41f7 inherit pub_types_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a922d03abf030ab09d8dd4af8a5828065 inherit pub_types_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="a922d03abf030ab09d8dd4af8a5828065"></a>
typedef PointCloud::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudPtr</b></td></tr>
<tr class="separator:a922d03abf030ab09d8dd4af8a5828065 inherit pub_types_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af089775487d2db25133d9e06152679ee inherit pub_types_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="af089775487d2db25133d9e06152679ee"></a>
typedef PointCloud::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudConstPtr</b></td></tr>
<tr class="separator:af089775487d2db25133d9e06152679ee inherit pub_types_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0bda42e747837e2398814c20eb6d517 inherit pub_types_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="ae0bda42e747837e2398814c20eb6d517"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1search_1_1_search.html">pcl::search::Search</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:ae0bda42e747837e2398814c20eb6d517 inherit pub_types_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a5b59a5c47651341b662252dcb8550c inherit pub_types_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="a2a5b59a5c47651341b662252dcb8550c"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1search_1_1_search.html">pcl::search::Search</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:a2a5b59a5c47651341b662252dcb8550c inherit pub_types_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b72144b949332536b816ed7cdcafda4 inherit pub_types_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="a3b72144b949332536b816ed7cdcafda4"></a>
typedef boost::shared_ptr&lt; std::vector&lt; int &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>IndicesPtr</b></td></tr>
<tr class="separator:a3b72144b949332536b816ed7cdcafda4 inherit pub_types_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95f5e7d01e595fb090d2d7841a1ea70c inherit pub_types_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="a95f5e7d01e595fb090d2d7841a1ea70c"></a>
typedef boost::shared_ptr&lt; const std::vector&lt; int &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>IndicesConstPtr</b></td></tr>
<tr class="separator:a95f5e7d01e595fb090d2d7841a1ea70c inherit pub_types_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:abd5620d255999eb1eb90fe01f6ad77f7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html#abd5620d255999eb1eb90fe01f6ad77f7">OrganizedNeighbor</a> (bool sorted_results=false, float eps=1e-4f, unsigned pyramid_level=5)</td></tr>
<tr class="memdesc:abd5620d255999eb1eb90fe01f6ad77f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor  <a href="classpcl_1_1search_1_1_organized_neighbor.html#abd5620d255999eb1eb90fe01f6ad77f7">更多...</a><br /></td></tr>
<tr class="separator:abd5620d255999eb1eb90fe01f6ad77f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ffb1067a137ade76bef94c686a6f118"><td class="memItemLeft" align="right" valign="top"><a id="a7ffb1067a137ade76bef94c686a6f118"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html#a7ffb1067a137ade76bef94c686a6f118">~OrganizedNeighbor</a> ()</td></tr>
<tr class="memdesc:a7ffb1067a137ade76bef94c686a6f118"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty deconstructor. <br /></td></tr>
<tr class="separator:a7ffb1067a137ade76bef94c686a6f118"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a496a1ee2dbc9352c8421dcba4e4adc13"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html#a496a1ee2dbc9352c8421dcba4e4adc13">isValid</a> () const</td></tr>
<tr class="memdesc:a496a1ee2dbc9352c8421dcba4e4adc13"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test whether this search-object is valid (input is organized AND from projective device) User should use this method after setting the input cloud, since setInput just prints an error if input is not organized or a projection matrix could not be determined.  <a href="classpcl_1_1search_1_1_organized_neighbor.html#a496a1ee2dbc9352c8421dcba4e4adc13">更多...</a><br /></td></tr>
<tr class="separator:a496a1ee2dbc9352c8421dcba4e4adc13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71f164ebed3cb938a0ca8837ab6bc473"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html#a71f164ebed3cb938a0ca8837ab6bc473">computeCameraMatrix</a> (Eigen::Matrix3f &amp;camera_matrix) const</td></tr>
<tr class="memdesc:a71f164ebed3cb938a0ca8837ab6bc473"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute the camera matrix  <a href="classpcl_1_1search_1_1_organized_neighbor.html#a71f164ebed3cb938a0ca8837ab6bc473">更多...</a><br /></td></tr>
<tr class="separator:a71f164ebed3cb938a0ca8837ab6bc473"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a5330aaf077e0833d59b51b23144996"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html#a7a5330aaf077e0833d59b51b23144996">setInputCloud</a> (const PointCloudConstPtr &amp;cloud, const IndicesConstPtr &amp;indices=IndicesConstPtr())</td></tr>
<tr class="memdesc:a7a5330aaf077e0833d59b51b23144996"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the input data set, if user has focal length he must set it before calling this  <a href="classpcl_1_1search_1_1_organized_neighbor.html#a7a5330aaf077e0833d59b51b23144996">更多...</a><br /></td></tr>
<tr class="separator:a7a5330aaf077e0833d59b51b23144996"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51cdc914c82f8b8e103cf86759bfe635"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html#a51cdc914c82f8b8e103cf86759bfe635">radiusSearch</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;p_q, double radius, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances, unsigned int max_nn=0) const</td></tr>
<tr class="memdesc:a51cdc914c82f8b8e103cf86759bfe635"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for all neighbors of query point that are within a given radius.  <a href="classpcl_1_1search_1_1_organized_neighbor.html#a51cdc914c82f8b8e103cf86759bfe635">更多...</a><br /></td></tr>
<tr class="separator:a51cdc914c82f8b8e103cf86759bfe635"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa96cb00f7008977d98bab6d02cb6bbd6"><td class="memItemLeft" align="right" valign="top"><a id="aa96cb00f7008977d98bab6d02cb6bbd6"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html#aa96cb00f7008977d98bab6d02cb6bbd6">estimateProjectionMatrix</a> ()</td></tr>
<tr class="memdesc:aa96cb00f7008977d98bab6d02cb6bbd6"><td class="mdescLeft">&#160;</td><td class="mdescRight">estimated the projection matrix from the input cloud. <br /></td></tr>
<tr class="separator:aa96cb00f7008977d98bab6d02cb6bbd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66a84093ee2d0bfd384008e1f84dc57a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html#a66a84093ee2d0bfd384008e1f84dc57a">nearestKSearch</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;p_q, int k, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances) const</td></tr>
<tr class="memdesc:a66a84093ee2d0bfd384008e1f84dc57a"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for the k-nearest neighbors for a given query point.  <a href="classpcl_1_1search_1_1_organized_neighbor.html#a66a84093ee2d0bfd384008e1f84dc57a">更多...</a><br /></td></tr>
<tr class="separator:a66a84093ee2d0bfd384008e1f84dc57a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca8b03a28a893389fe2a2153c3f657a2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html#aca8b03a28a893389fe2a2153c3f657a2">projectPoint</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;p, <a class="el" href="structpcl_1_1_point_x_y.html">pcl::PointXY</a> &amp;q) const</td></tr>
<tr class="memdesc:aca8b03a28a893389fe2a2153c3f657a2"><td class="mdescLeft">&#160;</td><td class="mdescRight">projects a point into the image  <a href="classpcl_1_1search_1_1_organized_neighbor.html#aca8b03a28a893389fe2a2153c3f657a2">更多...</a><br /></td></tr>
<tr class="separator:aca8b03a28a893389fe2a2153c3f657a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1search_1_1_search"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1search_1_1_search')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1search_1_1_search.html">pcl::search::Search&lt; PointT &gt;</a></td></tr>
<tr class="memitem:a77f437ecf7fa36987632db9c2b450441 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a77f437ecf7fa36987632db9c2b450441">Search</a> (const std::string &amp;name=&quot;&quot;, bool sorted=false)</td></tr>
<tr class="separator:a77f437ecf7fa36987632db9c2b450441 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25fbcca7b8f88fdf464f8c9af576626c inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a25fbcca7b8f88fdf464f8c9af576626c">~Search</a> ()</td></tr>
<tr class="separator:a25fbcca7b8f88fdf464f8c9af576626c inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58f09ccdd4f9296a3462f902f78ee544 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="a58f09ccdd4f9296a3462f902f78ee544"></a>
virtual const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a58f09ccdd4f9296a3462f902f78ee544">getName</a> () const</td></tr>
<tr class="memdesc:a58f09ccdd4f9296a3462f902f78ee544 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the search method name <br /></td></tr>
<tr class="separator:a58f09ccdd4f9296a3462f902f78ee544 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5e9ca2efdb199e64d05c399ea4a4412 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#af5e9ca2efdb199e64d05c399ea4a4412">setSortedResults</a> (bool sorted)</td></tr>
<tr class="memdesc:af5e9ca2efdb199e64d05c399ea4a4412 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight">sets whether the results should be sorted (ascending in the distance) or not  <a href="classpcl_1_1search_1_1_search.html#af5e9ca2efdb199e64d05c399ea4a4412">更多...</a><br /></td></tr>
<tr class="separator:af5e9ca2efdb199e64d05c399ea4a4412 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ab66bf51224fca916cc193e953d39d8 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="a0ab66bf51224fca916cc193e953d39d8"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a0ab66bf51224fca916cc193e953d39d8">getSortedResults</a> ()</td></tr>
<tr class="memdesc:a0ab66bf51224fca916cc193e953d39d8 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets whether the results should be sorted (ascending in the distance) or not Otherwise the results may be returned in any order. <br /></td></tr>
<tr class="separator:a0ab66bf51224fca916cc193e953d39d8 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f7aa9ba73d098c204bc8a6b9dd293dc inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a3f7aa9ba73d098c204bc8a6b9dd293dc">setInputCloud</a> (const PointCloudConstPtr &amp;cloud, const IndicesConstPtr &amp;indices=IndicesConstPtr())</td></tr>
<tr class="memdesc:a3f7aa9ba73d098c204bc8a6b9dd293dc inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pass the input dataset that the search will be performed on.  <a href="classpcl_1_1search_1_1_search.html#a3f7aa9ba73d098c204bc8a6b9dd293dc">更多...</a><br /></td></tr>
<tr class="separator:a3f7aa9ba73d098c204bc8a6b9dd293dc inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4a83e895b2a11e89319673117a927fa inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="ac4a83e895b2a11e89319673117a927fa"></a>
virtual PointCloudConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#ac4a83e895b2a11e89319673117a927fa">getInputCloud</a> () const</td></tr>
<tr class="memdesc:ac4a83e895b2a11e89319673117a927fa inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the input point cloud dataset. <br /></td></tr>
<tr class="separator:ac4a83e895b2a11e89319673117a927fa inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ba8e4114e97c267970b79fe6cf3697e inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="a0ba8e4114e97c267970b79fe6cf3697e"></a>
virtual IndicesConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a0ba8e4114e97c267970b79fe6cf3697e">getIndices</a> () const</td></tr>
<tr class="memdesc:a0ba8e4114e97c267970b79fe6cf3697e inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the vector of indices used. <br /></td></tr>
<tr class="separator:a0ba8e4114e97c267970b79fe6cf3697e inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe2901bec8399fdd4d62a4275d89528b inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memTemplParams" colspan="2">template&lt;typename PointTDiff &gt; </td></tr>
<tr class="memitem:abe2901bec8399fdd4d62a4275d89528b inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#abe2901bec8399fdd4d62a4275d89528b">nearestKSearchT</a> (const PointTDiff &amp;point, int k, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances) const</td></tr>
<tr class="memdesc:abe2901bec8399fdd4d62a4275d89528b inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for k-nearest neighbors for the given query point. This method accepts a different template parameter for the point type.  <a href="classpcl_1_1search_1_1_search.html#abe2901bec8399fdd4d62a4275d89528b">更多...</a><br /></td></tr>
<tr class="separator:abe2901bec8399fdd4d62a4275d89528b inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d7eedb3e5746257f121cdc675d6a21a inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a5d7eedb3e5746257f121cdc675d6a21a">nearestKSearch</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;cloud, int index, int k, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances) const</td></tr>
<tr class="memdesc:a5d7eedb3e5746257f121cdc675d6a21a inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for k-nearest neighbors for the given query point.  <a href="classpcl_1_1search_1_1_search.html#a5d7eedb3e5746257f121cdc675d6a21a">更多...</a><br /></td></tr>
<tr class="separator:a5d7eedb3e5746257f121cdc675d6a21a inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab79c10fe1e25b8c4a7104dd439e5f6e0 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#ab79c10fe1e25b8c4a7104dd439e5f6e0">nearestKSearch</a> (int index, int k, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances) const</td></tr>
<tr class="memdesc:ab79c10fe1e25b8c4a7104dd439e5f6e0 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for k-nearest neighbors for the given query point (zero-copy).  <a href="classpcl_1_1search_1_1_search.html#ab79c10fe1e25b8c4a7104dd439e5f6e0">更多...</a><br /></td></tr>
<tr class="separator:ab79c10fe1e25b8c4a7104dd439e5f6e0 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7191bd8166bed4623c27199bf59e972c inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a7191bd8166bed4623c27199bf59e972c">nearestKSearch</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;cloud, const std::vector&lt; int &gt; &amp;indices, int k, std::vector&lt; std::vector&lt; int &gt; &gt; &amp;k_indices, std::vector&lt; std::vector&lt; float &gt; &gt; &amp;k_sqr_distances) const</td></tr>
<tr class="memdesc:a7191bd8166bed4623c27199bf59e972c inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for the k-nearest neighbors for the given query point.  <a href="classpcl_1_1search_1_1_search.html#a7191bd8166bed4623c27199bf59e972c">更多...</a><br /></td></tr>
<tr class="separator:a7191bd8166bed4623c27199bf59e972c inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5388aab8b46f3180b8ebe9001f1e75eb inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memTemplParams" colspan="2">template&lt;typename PointTDiff &gt; </td></tr>
<tr class="memitem:a5388aab8b46f3180b8ebe9001f1e75eb inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a5388aab8b46f3180b8ebe9001f1e75eb">nearestKSearchT</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointTDiff &gt; &amp;cloud, const std::vector&lt; int &gt; &amp;indices, int k, std::vector&lt; std::vector&lt; int &gt; &gt; &amp;k_indices, std::vector&lt; std::vector&lt; float &gt; &gt; &amp;k_sqr_distances) const</td></tr>
<tr class="memdesc:a5388aab8b46f3180b8ebe9001f1e75eb inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for the k-nearest neighbors for the given query point. Use this method if the query points are of a different type than the points in the data set (e.g. <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html" title="A point structure representing Euclidean xyz coordinates, and the RGBA color.">PointXYZRGBA</a> instead of <a class="el" href="structpcl_1_1_point_x_y_z.html" title="A point structure representing Euclidean xyz coordinates. (SSE friendly)">PointXYZ</a>).  <a href="classpcl_1_1search_1_1_search.html#a5388aab8b46f3180b8ebe9001f1e75eb">更多...</a><br /></td></tr>
<tr class="separator:a5388aab8b46f3180b8ebe9001f1e75eb inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a817886100e51afd9d20f323eb095ca2e inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memTemplParams" colspan="2">template&lt;typename PointTDiff &gt; </td></tr>
<tr class="memitem:a817886100e51afd9d20f323eb095ca2e inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a817886100e51afd9d20f323eb095ca2e">radiusSearchT</a> (const PointTDiff &amp;point, double radius, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances, unsigned int max_nn=0) const</td></tr>
<tr class="memdesc:a817886100e51afd9d20f323eb095ca2e inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for all the nearest neighbors of the query point in a given radius.  <a href="classpcl_1_1search_1_1_search.html#a817886100e51afd9d20f323eb095ca2e">更多...</a><br /></td></tr>
<tr class="separator:a817886100e51afd9d20f323eb095ca2e inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4d5771324782f22122f9733efeb3e63 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#ac4d5771324782f22122f9733efeb3e63">radiusSearch</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;cloud, int index, double radius, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances, unsigned int max_nn=0) const</td></tr>
<tr class="memdesc:ac4d5771324782f22122f9733efeb3e63 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for all the nearest neighbors of the query point in a given radius.  <a href="classpcl_1_1search_1_1_search.html#ac4d5771324782f22122f9733efeb3e63">更多...</a><br /></td></tr>
<tr class="separator:ac4d5771324782f22122f9733efeb3e63 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6806b0255d2921adb04275439cf4cfd6 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a6806b0255d2921adb04275439cf4cfd6">radiusSearch</a> (int index, double radius, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances, unsigned int max_nn=0) const</td></tr>
<tr class="memdesc:a6806b0255d2921adb04275439cf4cfd6 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for all the nearest neighbors of the query point in a given radius (zero-copy).  <a href="classpcl_1_1search_1_1_search.html#a6806b0255d2921adb04275439cf4cfd6">更多...</a><br /></td></tr>
<tr class="separator:a6806b0255d2921adb04275439cf4cfd6 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71d9c395bc2de70831e9bca8ff6b27c9 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a71d9c395bc2de70831e9bca8ff6b27c9">radiusSearch</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;cloud, const std::vector&lt; int &gt; &amp;indices, double radius, std::vector&lt; std::vector&lt; int &gt; &gt; &amp;k_indices, std::vector&lt; std::vector&lt; float &gt; &gt; &amp;k_sqr_distances, unsigned int max_nn=0) const</td></tr>
<tr class="memdesc:a71d9c395bc2de70831e9bca8ff6b27c9 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for all the nearest neighbors of the query point in a given radius.  <a href="classpcl_1_1search_1_1_search.html#a71d9c395bc2de70831e9bca8ff6b27c9">更多...</a><br /></td></tr>
<tr class="separator:a71d9c395bc2de70831e9bca8ff6b27c9 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a474c6a0dd4e8fbf9c7f0840c22fb931d inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memTemplParams" colspan="2">template&lt;typename PointTDiff &gt; </td></tr>
<tr class="memitem:a474c6a0dd4e8fbf9c7f0840c22fb931d inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a474c6a0dd4e8fbf9c7f0840c22fb931d">radiusSearchT</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointTDiff &gt; &amp;cloud, const std::vector&lt; int &gt; &amp;indices, double radius, std::vector&lt; std::vector&lt; int &gt; &gt; &amp;k_indices, std::vector&lt; std::vector&lt; float &gt; &gt; &amp;k_sqr_distances, unsigned int max_nn=0) const</td></tr>
<tr class="memdesc:a474c6a0dd4e8fbf9c7f0840c22fb931d inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for all the nearest neighbors of the query points in a given radius.  <a href="classpcl_1_1search_1_1_search.html#a474c6a0dd4e8fbf9c7f0840c22fb931d">更多...</a><br /></td></tr>
<tr class="separator:a474c6a0dd4e8fbf9c7f0840c22fb931d inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected 成员函数</h2></td></tr>
<tr class="memitem:a3b5ab71f0bc6408d881070d7fa2ff7ca"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html#a3b5ab71f0bc6408d881070d7fa2ff7ca">testPoint</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;query, unsigned k, std::priority_queue&lt; <a class="el" href="structpcl_1_1search_1_1_organized_neighbor_1_1_entry.html">Entry</a> &gt; &amp;queue, unsigned index) const</td></tr>
<tr class="memdesc:a3b5ab71f0bc6408d881070d7fa2ff7ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">test if point given by index is among the k NN in results to the query point.  <a href="classpcl_1_1search_1_1_organized_neighbor.html#a3b5ab71f0bc6408d881070d7fa2ff7ca">更多...</a><br /></td></tr>
<tr class="separator:a3b5ab71f0bc6408d881070d7fa2ff7ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a946440e4ab8eb808c227a8373b69a01a"><td class="memItemLeft" align="right" valign="top"><a id="a946440e4ab8eb808c227a8373b69a01a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>clipRange</b> (int &amp;begin, int &amp;end, int min, int max) const</td></tr>
<tr class="separator:a946440e4ab8eb808c227a8373b69a01a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4ddb15bafc95e87339a57e315e64397"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html#ad4ddb15bafc95e87339a57e315e64397">getProjectedRadiusSearchBox</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;point, float squared_radius, unsigned &amp;minX, unsigned &amp;minY, unsigned &amp;maxX, unsigned &amp;maxY) const</td></tr>
<tr class="memdesc:ad4ddb15bafc95e87339a57e315e64397"><td class="mdescLeft">&#160;</td><td class="mdescRight">Obtain a search box in 2D from a sphere with a radius in 3D  <a href="classpcl_1_1search_1_1_organized_neighbor.html#ad4ddb15bafc95e87339a57e315e64397">更多...</a><br /></td></tr>
<tr class="separator:ad4ddb15bafc95e87339a57e315e64397"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classpcl_1_1search_1_1_search"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classpcl_1_1search_1_1_search')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classpcl_1_1search_1_1_search.html">pcl::search::Search&lt; PointT &gt;</a></td></tr>
<tr class="memitem:aa15b2e10688acc27e6a87d02192a17b1 inherit pro_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="aa15b2e10688acc27e6a87d02192a17b1"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>sortResults</b> (std::vector&lt; int &gt; &amp;indices, std::vector&lt; float &gt; &amp;distances) const</td></tr>
<tr class="separator:aa15b2e10688acc27e6a87d02192a17b1 inherit pro_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected 属性</h2></td></tr>
<tr class="memitem:a960c16a30ce5ae20096dc4f7f75ccd14"><td class="memItemLeft" align="right" valign="top"><a id="a960c16a30ce5ae20096dc4f7f75ccd14"></a>
Eigen::Matrix&lt; float, 3, 4, Eigen::RowMajor &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html#a960c16a30ce5ae20096dc4f7f75ccd14">projection_matrix_</a></td></tr>
<tr class="memdesc:a960c16a30ce5ae20096dc4f7f75ccd14"><td class="mdescLeft">&#160;</td><td class="mdescRight">the projection matrix. Either set by user or calculated by the first / each input cloud <br /></td></tr>
<tr class="separator:a960c16a30ce5ae20096dc4f7f75ccd14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5494b27882808395565d87a74fdd5551"><td class="memItemLeft" align="right" valign="top"><a id="a5494b27882808395565d87a74fdd5551"></a>
Eigen::Matrix&lt; float, 3, 3, Eigen::RowMajor &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html#a5494b27882808395565d87a74fdd5551">KR_</a></td></tr>
<tr class="memdesc:a5494b27882808395565d87a74fdd5551"><td class="mdescLeft">&#160;</td><td class="mdescRight">inveser of the left 3x3 projection matrix which is K * R (with K being the camera matrix and R the rotation matrix) <br /></td></tr>
<tr class="separator:a5494b27882808395565d87a74fdd5551"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab95decbae9ae03e6e9f265eebfd25e8a"><td class="memItemLeft" align="right" valign="top"><a id="ab95decbae9ae03e6e9f265eebfd25e8a"></a>
Eigen::Matrix&lt; float, 3, 3, Eigen::RowMajor &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html#ab95decbae9ae03e6e9f265eebfd25e8a">KR_KRT_</a></td></tr>
<tr class="memdesc:ab95decbae9ae03e6e9f265eebfd25e8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">inveser of the left 3x3 projection matrix which is K * R (with K being the camera matrix and R the rotation matrix) <br /></td></tr>
<tr class="separator:ab95decbae9ae03e6e9f265eebfd25e8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aedb72502639ee44da3f315526d156af1"><td class="memItemLeft" align="right" valign="top"><a id="aedb72502639ee44da3f315526d156af1"></a>
const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html#aedb72502639ee44da3f315526d156af1">eps_</a></td></tr>
<tr class="memdesc:aedb72502639ee44da3f315526d156af1"><td class="mdescLeft">&#160;</td><td class="mdescRight">epsilon value for the MSE of the projection matrix estimation <br /></td></tr>
<tr class="separator:aedb72502639ee44da3f315526d156af1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2842d49ead487ed71431decb82e92dd"><td class="memItemLeft" align="right" valign="top"><a id="ab2842d49ead487ed71431decb82e92dd"></a>
const unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html#ab2842d49ead487ed71431decb82e92dd">pyramid_level_</a></td></tr>
<tr class="memdesc:ab2842d49ead487ed71431decb82e92dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">using only a subsample of points to calculate the projection matrix. pyramid_level_ = use down sampled cloud given by pyramid_level_ <br /></td></tr>
<tr class="separator:ab2842d49ead487ed71431decb82e92dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ab81392a0445245244b1691bc39a0bb"><td class="memItemLeft" align="right" valign="top"><a id="a8ab81392a0445245244b1691bc39a0bb"></a>
std::vector&lt; unsigned char &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html#a8ab81392a0445245244b1691bc39a0bb">mask_</a></td></tr>
<tr class="memdesc:a8ab81392a0445245244b1691bc39a0bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">mask, indicating whether the point was in the indices list or not. <br /></td></tr>
<tr class="separator:a8ab81392a0445245244b1691bc39a0bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1search_1_1_search"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1search_1_1_search')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1search_1_1_search.html">pcl::search::Search&lt; PointT &gt;</a></td></tr>
<tr class="memitem:a3044a0a70f8f083400a41b9e34cfa4fc inherit pro_attribs_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="a3044a0a70f8f083400a41b9e34cfa4fc"></a>
PointCloudConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>input_</b></td></tr>
<tr class="separator:a3044a0a70f8f083400a41b9e34cfa4fc inherit pro_attribs_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6db6521a19458ec8e5ada937bf16dcc1 inherit pro_attribs_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="a6db6521a19458ec8e5ada937bf16dcc1"></a>
IndicesConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>indices_</b></td></tr>
<tr class="separator:a6db6521a19458ec8e5ada937bf16dcc1 inherit pro_attribs_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4c8d2f983d9aeebfb592eb256d1f4d2 inherit pro_attribs_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="ab4c8d2f983d9aeebfb592eb256d1f4d2"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>sorted_results_</b></td></tr>
<tr class="separator:ab4c8d2f983d9aeebfb592eb256d1f4d2 inherit pro_attribs_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adde2b11155d871a0a835254ca1820591 inherit pro_attribs_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="adde2b11155d871a0a835254ca1820591"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>name_</b></td></tr>
<tr class="separator:adde2b11155d871a0a835254ca1820591 inherit pro_attribs_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><h3>template&lt;typename PointT&gt;<br />
class pcl::search::OrganizedNeighbor&lt; PointT &gt;</h3>

<p><a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html" title="OrganizedNeighbor is a class for optimized nearest neigbhor search in organized point clouds.">OrganizedNeighbor</a> is a class for optimized nearest neigbhor search in organized point clouds. </p>
<dl class="section author"><dt>作者</dt><dd>Radu B. Rusu, Julius Kammerl, Suat Gedikli, Koen Buys </dd></dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
<a id="abd5620d255999eb1eb90fe01f6ad77f7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd5620d255999eb1eb90fe01f6ad77f7">&#9670;&nbsp;</a></span>OrganizedNeighbor()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html">pcl::search::OrganizedNeighbor</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::<a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html">OrganizedNeighbor</a> </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>sorted_results</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>eps</em> = <code>1e-4f</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>pyramid_level</em> = <code>5</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Constructor </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">sorted_results</td><td>whether the results should be return sorted in ascending order on the distances or not. This applies only for radius search, since knn always returns sorted resutls <br  />
 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">eps</td><td>the threshold for the mean-squared-error of the estimation of the projection matrix. if the MSE is above this value, the point cloud is considered as not from a projective device, thus organized neighbor search can not be applied on that cloud. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">pyramid_level</td><td>the level of the down sampled point cloud to be used for projection matrix estimation </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;          : Search&lt;PointT&gt; (<span class="stringliteral">&quot;OrganizedNeighbor&quot;</span>, sorted_results)</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;          , <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a960c16a30ce5ae20096dc4f7f75ccd14">projection_matrix_</a> (Eigen::Matrix&lt;float, 3, 4, Eigen::RowMajor&gt;::Zero ())</div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;          , <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a5494b27882808395565d87a74fdd5551">KR_</a> (Eigen::Matrix&lt;float, 3, 3, Eigen::RowMajor&gt;::Zero ())</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;          , <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#ab95decbae9ae03e6e9f265eebfd25e8a">KR_KRT_</a> (Eigen::Matrix&lt;float, 3, 3, Eigen::RowMajor&gt;::Zero ())</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;          , <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#aedb72502639ee44da3f315526d156af1">eps_</a> (eps)</div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;          , <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#ab2842d49ead487ed71431decb82e92dd">pyramid_level_</a> (pyramid_level)</div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;          , <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a8ab81392a0445245244b1691bc39a0bb">mask_</a> ()</div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;        {</div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;        }</div>
<div class="ttc" id="aclasspcl_1_1search_1_1_organized_neighbor_html_a5494b27882808395565d87a74fdd5551"><div class="ttname"><a href="classpcl_1_1search_1_1_organized_neighbor.html#a5494b27882808395565d87a74fdd5551">pcl::search::OrganizedNeighbor::KR_</a></div><div class="ttdeci">Eigen::Matrix&lt; float, 3, 3, Eigen::RowMajor &gt; KR_</div><div class="ttdoc">inveser of the left 3x3 projection matrix which is K * R (with K being the camera matrix and R the ro...</div><div class="ttdef"><b>Definition:</b> organized.h:262</div></div>
<div class="ttc" id="aclasspcl_1_1search_1_1_organized_neighbor_html_a8ab81392a0445245244b1691bc39a0bb"><div class="ttname"><a href="classpcl_1_1search_1_1_organized_neighbor.html#a8ab81392a0445245244b1691bc39a0bb">pcl::search::OrganizedNeighbor::mask_</a></div><div class="ttdeci">std::vector&lt; unsigned char &gt; mask_</div><div class="ttdoc">mask, indicating whether the point was in the indices list or not.</div><div class="ttdef"><b>Definition:</b> organized.h:274</div></div>
<div class="ttc" id="aclasspcl_1_1search_1_1_organized_neighbor_html_a960c16a30ce5ae20096dc4f7f75ccd14"><div class="ttname"><a href="classpcl_1_1search_1_1_organized_neighbor.html#a960c16a30ce5ae20096dc4f7f75ccd14">pcl::search::OrganizedNeighbor::projection_matrix_</a></div><div class="ttdeci">Eigen::Matrix&lt; float, 3, 4, Eigen::RowMajor &gt; projection_matrix_</div><div class="ttdoc">the projection matrix. Either set by user or calculated by the first / each input cloud</div><div class="ttdef"><b>Definition:</b> organized.h:259</div></div>
<div class="ttc" id="aclasspcl_1_1search_1_1_organized_neighbor_html_ab2842d49ead487ed71431decb82e92dd"><div class="ttname"><a href="classpcl_1_1search_1_1_organized_neighbor.html#ab2842d49ead487ed71431decb82e92dd">pcl::search::OrganizedNeighbor::pyramid_level_</a></div><div class="ttdeci">const unsigned pyramid_level_</div><div class="ttdoc">using only a subsample of points to calculate the projection matrix. pyramid_level_ = use down sample...</div><div class="ttdef"><b>Definition:</b> organized.h:271</div></div>
<div class="ttc" id="aclasspcl_1_1search_1_1_organized_neighbor_html_ab95decbae9ae03e6e9f265eebfd25e8a"><div class="ttname"><a href="classpcl_1_1search_1_1_organized_neighbor.html#ab95decbae9ae03e6e9f265eebfd25e8a">pcl::search::OrganizedNeighbor::KR_KRT_</a></div><div class="ttdeci">Eigen::Matrix&lt; float, 3, 3, Eigen::RowMajor &gt; KR_KRT_</div><div class="ttdoc">inveser of the left 3x3 projection matrix which is K * R (with K being the camera matrix and R the ro...</div><div class="ttdef"><b>Definition:</b> organized.h:265</div></div>
<div class="ttc" id="aclasspcl_1_1search_1_1_organized_neighbor_html_aedb72502639ee44da3f315526d156af1"><div class="ttname"><a href="classpcl_1_1search_1_1_organized_neighbor.html#aedb72502639ee44da3f315526d156af1">pcl::search::OrganizedNeighbor::eps_</a></div><div class="ttdeci">const float eps_</div><div class="ttdoc">epsilon value for the MSE of the projection matrix estimation</div><div class="ttdef"><b>Definition:</b> organized.h:268</div></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
<a id="a71f164ebed3cb938a0ca8837ab6bc473"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a71f164ebed3cb938a0ca8837ab6bc473">&#9670;&nbsp;</a></span>computeCameraMatrix()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html">pcl::search::OrganizedNeighbor</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::computeCameraMatrix </td>
          <td>(</td>
          <td class="paramtype">Eigen::Matrix3f &amp;&#160;</td>
          <td class="paramname"><em>camera_matrix</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Compute the camera matrix </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">camera_matrix</td><td>the resultant computed camera matrix </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;{</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;  pcl::getCameraMatrixFromProjectionMatrix (<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a960c16a30ce5ae20096dc4f7f75ccd14">projection_matrix_</a>, camera_matrix);</div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="ad4ddb15bafc95e87339a57e315e64397"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad4ddb15bafc95e87339a57e315e64397">&#9670;&nbsp;</a></span>getProjectedRadiusSearchBox()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html">pcl::search::OrganizedNeighbor</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::getProjectedRadiusSearchBox </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>point</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>squared_radius</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned &amp;&#160;</td>
          <td class="paramname"><em>minX</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned &amp;&#160;</td>
          <td class="paramname"><em>minY</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned &amp;&#160;</td>
          <td class="paramname"><em>maxX</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned &amp;&#160;</td>
          <td class="paramname"><em>maxY</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Obtain a search box in 2D from a sphere with a radius in 3D </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">point</td><td>the query point (sphere center) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">squared_radius</td><td>the squared sphere radius </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">minX</td><td>the min X box coordinate </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">minY</td><td>the min Y box coordinate </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">maxX</td><td>the max X box coordinate </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">maxY</td><td>the max Y box coordinate </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;{</div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;  Eigen::Vector3f queryvec (point.x, point.y, point.z);</div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;  <span class="comment">//Eigen::Vector3f q = KR_ * point.getVector3fMap () + projection_matrix_.block &lt;3, 1&gt; (0, 3);</span></div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;  Eigen::Vector3f q (<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a5494b27882808395565d87a74fdd5551">KR_</a> * queryvec + <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a960c16a30ce5ae20096dc4f7f75ccd14">projection_matrix_</a>.block &lt;3, 1&gt; (0, 3));</div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160; </div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;  <span class="keywordtype">float</span> a = squared_radius * <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#ab95decbae9ae03e6e9f265eebfd25e8a">KR_KRT_</a>.coeff (8) - q [2] * q [2];</div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;  <span class="keywordtype">float</span> b = squared_radius * <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#ab95decbae9ae03e6e9f265eebfd25e8a">KR_KRT_</a>.coeff (7) - q [1] * q [2];</div>
<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;  <span class="keywordtype">float</span> c = squared_radius * <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#ab95decbae9ae03e6e9f265eebfd25e8a">KR_KRT_</a>.coeff (4) - q [1] * q [1];</div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;  <span class="keywordtype">int</span> min, max;</div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;  <span class="comment">// a and c are multiplied by two already =&gt; - 4ac -&gt; - ac</span></div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;  <span class="keywordtype">float</span> det = b * b - a * c;</div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;  <span class="keywordflow">if</span> (det &lt; 0)</div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;  {</div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;    minY = 0;</div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;    maxY = input_-&gt;height - 1;</div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;  }</div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;  {</div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;    <span class="keywordtype">float</span> y1 = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> ((b - sqrt (det)) / a);</div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;    <span class="keywordtype">float</span> y2 = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> ((b + sqrt (det)) / a);</div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160; </div>
<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;    min = std::min (<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (y1)), <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (y2)));</div>
<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;    max = std::max (<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (ceil (y1)), <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (ceil (y2)));</div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;    minY = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span> (std::min (<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (input_-&gt;height) - 1, std::max (0, min)));</div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;    maxY = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span> (std::max (std::min (<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (input_-&gt;height) - 1, max), 0));</div>
<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;  }</div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160; </div>
<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;  b = squared_radius * <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#ab95decbae9ae03e6e9f265eebfd25e8a">KR_KRT_</a>.coeff (6) - q [0] * q [2];</div>
<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;  c = squared_radius * <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#ab95decbae9ae03e6e9f265eebfd25e8a">KR_KRT_</a>.coeff (0) - q [0] * q [0];</div>
<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160; </div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;  det = b * b - a * c;</div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;  <span class="keywordflow">if</span> (det &lt; 0)</div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;  {</div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;    minX = 0;</div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;    maxX = input_-&gt;width - 1;</div>
<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;  }</div>
<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;  {</div>
<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;    <span class="keywordtype">float</span> x1 = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> ((b - sqrt (det)) / a);</div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;    <span class="keywordtype">float</span> x2 = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> ((b + sqrt (det)) / a);</div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160; </div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;    min = std::min (<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (x1)), <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (x2)));</div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;    max = std::max (<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (ceil (x1)), <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (ceil (x2)));</div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;    minX = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span> (std::min (<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (input_-&gt;width)- 1, std::max (0, min)));</div>
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;    maxX = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span> (std::max (std::min (<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (input_-&gt;width) - 1, max), 0));</div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;  }</div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a496a1ee2dbc9352c8421dcba4e4adc13"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a496a1ee2dbc9352c8421dcba4e4adc13">&#9670;&nbsp;</a></span>isValid()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html">pcl::search::OrganizedNeighbor</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::isValid </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Test whether this search-object is valid (input is organized AND from projective device) User should use this method after setting the input cloud, since setInput just prints an error if input is not organized or a projection matrix could not be determined. </p>
<dl class="section return"><dt>返回</dt><dd>true if the input data is organized and from a projective device, false otherwise </dd></dl>
<div class="fragment"><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;        {</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;          <span class="comment">// determinant (KR) = determinant (K) * determinant (R) = determinant (K) = f_x * f_y.</span></div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;          <span class="comment">// If we expect at max an opening angle of 170degree in x-direction -&gt; f_x = 2.0 * width / tan (85 degree);</span></div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;          <span class="comment">// 2 * tan (85 degree) ~ 22.86</span></div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;          <span class="keywordtype">float</span> min_f = 0.043744332f * <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(input_-&gt;width);</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;          <span class="comment">//std::cout &lt;&lt; &quot;isValid: &quot; &lt;&lt; determinant3x3Matrix&lt;Eigen::Matrix3f&gt; (KR_ / sqrt (KR_KRT_.coeff (8))) &lt;&lt; &quot; &gt;= &quot; &lt;&lt; (min_f * min_f) &lt;&lt; std::endl;</span></div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;          <span class="keywordflow">return</span> (determinant3x3Matrix&lt;Eigen::Matrix3f&gt; (<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a5494b27882808395565d87a74fdd5551">KR_</a> / std::sqrt (<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#ab95decbae9ae03e6e9f265eebfd25e8a">KR_KRT_</a>.coeff (8))) &gt;= (min_f * min_f));</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a66a84093ee2d0bfd384008e1f84dc57a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a66a84093ee2d0bfd384008e1f84dc57a">&#9670;&nbsp;</a></span>nearestKSearch()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html">pcl::search::OrganizedNeighbor</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::nearestKSearch </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>p_q</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>k</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_indices</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_sqr_distances</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for the k-nearest neighbors for a given query point. </p>
<dl class="section note"><dt>注解</dt><dd>limiting the maximum search radius (with setMaxDistance) can lead to a significant improvement in search speed </dd></dl>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_q</td><td>the given query point (<a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html#a7a5330aaf077e0833d59b51b23144996">setInputCloud</a> must be given a-priori!) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">k</td><td>the number of neighbors to search for (used only if horizontal and vertical window not given already!) </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_indices</td><td>the resultant point indices (must be resized to <em>k</em> beforehand!) </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_sqr_distances</td><td></td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>注解</dt><dd>this function does not return distances </dd></dl>
<dl class="section return"><dt>返回</dt><dd>number of neighbors found </dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000034">待办事项:</a></b></dt><dd>still need to implements this functionality </dd></dl>

<p>实现了 <a class="el" href="classpcl_1_1search_1_1_search.html#a97b4eff97eaa23d4586ca9b16d1b0671">pcl::search::Search&lt; PointT &gt;</a>.</p>
<div class="fragment"><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;{</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  assert (isFinite (query) &amp;&amp; <span class="stringliteral">&quot;Invalid (NaN, Inf) point coordinates given to nearestKSearch!&quot;</span>);</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  <span class="keywordflow">if</span> (k &lt; 1)</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  {</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    k_indices.clear ();</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    k_sqr_distances.clear ();</div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <span class="keywordflow">return</span> (0);</div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;  }</div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160; </div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  Eigen::Vector3f queryvec (query.x, query.y, query.z);</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;  <span class="comment">// project query point on the image plane</span></div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  <span class="comment">//Eigen::Vector3f q = KR_ * query.getVector3fMap () + projection_matrix_.block &lt;3, 1&gt; (0, 3);</span></div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  Eigen::Vector3f q (<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a5494b27882808395565d87a74fdd5551">KR_</a> * queryvec + <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a960c16a30ce5ae20096dc4f7f75ccd14">projection_matrix_</a>.block &lt;3, 1&gt; (0, 3));</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  <span class="keywordtype">int</span> xBegin = int(q [0] / q [2] + 0.5f);</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;  <span class="keywordtype">int</span> yBegin = int(q [1] / q [2] + 0.5f);</div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  <span class="keywordtype">int</span> xEnd   = xBegin + 1; <span class="comment">// end is the pixel that is not used anymore, like in iterators</span></div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  <span class="keywordtype">int</span> yEnd   = yBegin + 1;</div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160; </div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  <span class="comment">// the search window. This is supposed to shrink within the iterations</span></div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  <span class="keywordtype">unsigned</span> left = 0;</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  <span class="keywordtype">unsigned</span> right = input_-&gt;width - 1;</div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  <span class="keywordtype">unsigned</span> top = 0;</div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="keywordtype">unsigned</span> bottom = input_-&gt;height - 1;</div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160; </div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;  std::priority_queue &lt;Entry&gt; results;</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;  <span class="comment">//std::vector&lt;Entry&gt; k_results;</span></div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;  <span class="comment">//k_results.reserve (k);</span></div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;  <span class="comment">// add point laying on the projection of the query point.</span></div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;  <span class="keywordflow">if</span> (xBegin &gt;= 0 &amp;&amp; </div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;      xBegin &lt; <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (input_-&gt;width) &amp;&amp; </div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;      yBegin &gt;= 0 &amp;&amp; </div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;      yBegin &lt; <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (input_-&gt;height))</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a3b5ab71f0bc6408d881070d7fa2ff7ca">testPoint</a> (query, k, results, yBegin * input_-&gt;width + xBegin);</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;  <span class="keywordflow">else</span> <span class="comment">// point lys</span></div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;  {</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <span class="comment">// find the box that touches the image border -&gt; dont waste time evaluating boxes that are completely outside the image!</span></div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    <span class="keywordtype">int</span> dist = std::numeric_limits&lt;int&gt;::max ();</div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160; </div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    <span class="keywordflow">if</span> (xBegin &lt; 0)</div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;      dist = -xBegin;</div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (xBegin &gt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (input_-&gt;width))</div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;      dist = xBegin - <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (input_-&gt;width);</div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160; </div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    <span class="keywordflow">if</span> (yBegin &lt; 0)</div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;      dist = std::min (dist, -yBegin);</div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (yBegin &gt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (input_-&gt;height))</div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;      dist = std::min (dist, yBegin - <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (input_-&gt;height));</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160; </div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    xBegin -= dist;</div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    xEnd   += dist;</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160; </div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    yBegin -= dist;</div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    yEnd   += dist;</div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;  }</div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160; </div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;  </div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;  <span class="comment">// stop used as isChanged as well as stop.</span></div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;  <span class="keywordtype">bool</span> stop = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;  <span class="keywordflow">do</span></div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;  {</div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    <span class="comment">// increment box size</span></div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    --xBegin;</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    ++xEnd;</div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    --yBegin;</div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    ++yEnd;</div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160; </div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    <span class="comment">// the range in x-direction which intersects with the image width</span></div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    <span class="keywordtype">int</span> xFrom = xBegin;</div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;    <span class="keywordtype">int</span> xTo   = xEnd;</div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    clipRange (xFrom, xTo, 0, input_-&gt;width);</div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    </div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    <span class="comment">// if x-extend is not 0</span></div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;    <span class="keywordflow">if</span> (xTo &gt; xFrom)</div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;    {</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;      <span class="comment">// if upper line of the rectangle is visible and x-extend is not 0</span></div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;      <span class="keywordflow">if</span> (yBegin &gt;= 0 &amp;&amp; yBegin &lt; <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (input_-&gt;height))</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;      {</div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;        <span class="keywordtype">int</span> idx   = yBegin * input_-&gt;width + xFrom;</div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;        <span class="keywordtype">int</span> idxTo = idx + xTo - xFrom;</div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;        <span class="keywordflow">for</span> (; idx &lt; idxTo; ++idx)</div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;          stop = <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a3b5ab71f0bc6408d881070d7fa2ff7ca">testPoint</a> (query, k, results, idx) || stop;</div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;      }</div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;      </div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160; </div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;      <span class="comment">// the row yEnd does NOT belong to the box -&gt; last row = yEnd - 1</span></div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;      <span class="comment">// if lower line of the rectangle is visible</span></div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;      <span class="keywordflow">if</span> (yEnd &gt; 0 &amp;&amp; yEnd &lt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (input_-&gt;height))</div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;      {</div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;        <span class="keywordtype">int</span> idx   = (yEnd - 1) * input_-&gt;width + xFrom;</div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;        <span class="keywordtype">int</span> idxTo = idx + xTo - xFrom;</div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160; </div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;        for (; idx &lt; idxTo; ++idx)</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;          stop = <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a3b5ab71f0bc6408d881070d7fa2ff7ca">testPoint</a> (query, k, results, idx) || stop;</div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;      }</div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;      </div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;      <span class="comment">// skip first row and last row (already handled above)</span></div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;      <span class="keywordtype">int</span> yFrom = yBegin + 1;</div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;      <span class="keywordtype">int</span> yTo   = yEnd - 1;</div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;      clipRange (yFrom, yTo, 0, input_-&gt;height);</div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;      </div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;      <span class="comment">// if we have lines in between that are also visible</span></div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;      <span class="keywordflow">if</span> (yFrom &lt; yTo)</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;      {</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;        <span class="keywordflow">if</span> (xBegin &gt;= 0 &amp;&amp; xBegin &lt; <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (input_-&gt;width))</div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;        {</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;          <span class="keywordtype">int</span> idx   = yFrom * input_-&gt;width + xBegin;</div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;          <span class="keywordtype">int</span> idxTo = yTo * input_-&gt;width + xBegin;</div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160; </div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;          <span class="keywordflow">for</span> (; idx &lt; idxTo; idx += input_-&gt;width)</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;            stop = <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a3b5ab71f0bc6408d881070d7fa2ff7ca">testPoint</a> (query, k, results, idx) || stop;</div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;        }</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;        </div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;        <span class="keywordflow">if</span> (xEnd &gt; 0 &amp;&amp; xEnd &lt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (input_-&gt;width))</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;        {</div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;          <span class="keywordtype">int</span> idx   = yFrom * input_-&gt;width + xEnd - 1;</div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;          <span class="keywordtype">int</span> idxTo = yTo * input_-&gt;width + xEnd - 1;</div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160; </div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;          <span class="keywordflow">for</span> (; idx &lt; idxTo; idx += input_-&gt;width)</div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;            stop = <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a3b5ab71f0bc6408d881070d7fa2ff7ca">testPoint</a> (query, k, results, idx) || stop;</div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;        }</div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;        </div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;      }</div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;      <span class="comment">// stop here means that the k-nearest neighbor changed -&gt; recalculate bounding box of ellipse.</span></div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;      <span class="keywordflow">if</span> (stop)</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;        <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#ad4ddb15bafc95e87339a57e315e64397">getProjectedRadiusSearchBox</a> (query, results.top ().distance, left, right, top, bottom);</div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;      </div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;    }</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    <span class="comment">// now we use it as stop flag -&gt; if bounding box is completely within the already examined search box were done!</span></div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;    stop = (<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (left)   &gt;= xBegin &amp;&amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (left)   &lt; xEnd &amp;&amp; </div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;            <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (right)  &gt;= xBegin &amp;&amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (right)  &lt; xEnd &amp;&amp;</div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;            <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (top)    &gt;= yBegin &amp;&amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (top)    &lt; yEnd &amp;&amp; </div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;            <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (bottom) &gt;= yBegin &amp;&amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (bottom) &lt; yEnd);</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;    </div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;  } <span class="keywordflow">while</span> (!stop);</div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160; </div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;  </div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;  k_indices.resize (results.size ());</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;  k_sqr_distances.resize (results.size ());</div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;  <span class="keywordtype">size_t</span> idx = results.size () - 1;</div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;  <span class="keywordflow">while</span> (!results.empty ())</div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;  {</div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    k_indices [idx] = results.top ().index;</div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    k_sqr_distances [idx] = results.top ().distance;</div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;    results.pop ();</div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    --idx;</div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;  }</div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;  </div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;  <span class="keywordflow">return</span> (<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (k_indices.size ()));</div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1search_1_1_organized_neighbor_html_a3b5ab71f0bc6408d881070d7fa2ff7ca"><div class="ttname"><a href="classpcl_1_1search_1_1_organized_neighbor.html#a3b5ab71f0bc6408d881070d7fa2ff7ca">pcl::search::OrganizedNeighbor::testPoint</a></div><div class="ttdeci">bool testPoint(const PointT &amp;query, unsigned k, std::priority_queue&lt; Entry &gt; &amp;queue, unsigned index) const</div><div class="ttdoc">test if point given by index is among the k NN in results to the query point.</div><div class="ttdef"><b>Definition:</b> organized.h:216</div></div>
<div class="ttc" id="aclasspcl_1_1search_1_1_organized_neighbor_html_ad4ddb15bafc95e87339a57e315e64397"><div class="ttname"><a href="classpcl_1_1search_1_1_organized_neighbor.html#ad4ddb15bafc95e87339a57e315e64397">pcl::search::OrganizedNeighbor::getProjectedRadiusSearchBox</a></div><div class="ttdeci">void getProjectedRadiusSearchBox(const PointT &amp;point, float squared_radius, unsigned &amp;minX, unsigned &amp;minY, unsigned &amp;maxX, unsigned &amp;maxY) const</div><div class="ttdoc">Obtain a search box in 2D from a sphere with a radius in 3D</div><div class="ttdef"><b>Definition:</b> organized.hpp:273</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aca8b03a28a893389fe2a2153c3f657a2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca8b03a28a893389fe2a2153c3f657a2">&#9670;&nbsp;</a></span>projectPoint()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html">pcl::search::OrganizedNeighbor</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::projectPoint </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structpcl_1_1_point_x_y.html">pcl::PointXY</a> &amp;&#160;</td>
          <td class="paramname"><em>q</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>projects a point into the image </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>point in 3D World Coordinate Frame to be projected onto the image plane </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">q</td><td>the 2D projected point in pixel coordinates (u,v) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>true if projection is valid, false otherwise </dd></dl>
<div class="fragment"><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;{</div>
<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;  Eigen::Vector3f projected = <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a5494b27882808395565d87a74fdd5551">KR_</a> * point.getVector3fMap () + <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a960c16a30ce5ae20096dc4f7f75ccd14">projection_matrix_</a>.block &lt;3, 1&gt; (0, 3);</div>
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;  q.x = projected [0] / projected [2];</div>
<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;  q.y = projected [1] / projected [2];</div>
<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;  <span class="keywordflow">return</span> (projected[2] != 0);</div>
<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a51cdc914c82f8b8e103cf86759bfe635"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a51cdc914c82f8b8e103cf86759bfe635">&#9670;&nbsp;</a></span>radiusSearch()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html">pcl::search::OrganizedNeighbor</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::radiusSearch </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>p_q</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>radius</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_indices</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_sqr_distances</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>max_nn</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for all neighbors of query point that are within a given radius. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_q</td><td>the given query point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">radius</td><td>the radius of the sphere bounding all of p_q's neighbors </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_indices</td><td>the resultant indices of the neighboring points </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_sqr_distances</td><td>the resultant squared distances to the neighboring points </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_nn</td><td>if given, bounds the maximum returned neighbors to this value. If <em>max_nn</em> is set to 0 or to a number higher than the number of points in the input cloud, all neighbors in <em>radius</em> will be returned. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>number of neighbors found in radius </dd></dl>

<p>实现了 <a class="el" href="classpcl_1_1search_1_1_search.html#a441f41e648d284d68e1f2015d40f5e7c">pcl::search::Search&lt; PointT &gt;</a>.</p>
<div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;{</div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;  <span class="comment">// NAN test</span></div>
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;  assert (isFinite (query) &amp;&amp; <span class="stringliteral">&quot;Invalid (NaN, Inf) point coordinates given to nearestKSearch!&quot;</span>);</div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160; </div>
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;  <span class="comment">// search window</span></div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  <span class="keywordtype">unsigned</span> left, right, top, bottom;</div>
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="comment">//unsigned x, y, idx;</span></div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="keywordtype">float</span> squared_distance;</div>
<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  <span class="keywordtype">double</span> squared_radius;</div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160; </div>
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;  k_indices.clear ();</div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  k_sqr_distances.clear ();</div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160; </div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;  squared_radius = radius * radius;</div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160; </div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;  this-&gt;<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#ad4ddb15bafc95e87339a57e315e64397">getProjectedRadiusSearchBox</a> (query, <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (squared_radius), left, right, top, bottom);</div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160; </div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;  <span class="comment">// iterate over search box</span></div>
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;  <span class="keywordflow">if</span> (max_nn == 0 || max_nn &gt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span> (input_-&gt;points.size ()))</div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    max_nn = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span> (input_-&gt;points.size ());</div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160; </div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;  k_indices.reserve (max_nn);</div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  k_sqr_distances.reserve (max_nn);</div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160; </div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;  <span class="keywordtype">unsigned</span> yEnd  = (bottom + 1) * input_-&gt;width + right + 1;</div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <span class="keywordtype">unsigned</span> idx  = top * input_-&gt;width + left;</div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  <span class="keywordtype">unsigned</span> skip = input_-&gt;width - right + left - 1;</div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;  <span class="keywordtype">unsigned</span> xEnd = idx - left + right + 1;</div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160; </div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;  for (; xEnd != yEnd; idx += skip, xEnd += input_-&gt;width)</div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  {</div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    <span class="keywordflow">for</span> (; idx &lt; xEnd; ++idx)</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    {</div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;      <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a8ab81392a0445245244b1691bc39a0bb">mask_</a>[idx] || !isFinite (input_-&gt;points[idx]))</div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;        <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160; </div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;      <span class="keywordtype">float</span> dist_x = input_-&gt;points[idx].x - query.x;</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;      <span class="keywordtype">float</span> dist_y = input_-&gt;points[idx].y - query.y;</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;      <span class="keywordtype">float</span> dist_z = input_-&gt;points[idx].z - query.z;</div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;      squared_distance = dist_x * dist_x + dist_y * dist_y + dist_z * dist_z;</div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;      <span class="comment">//squared_distance = (input_-&gt;points[idx].getVector3fMap () - query.getVector3fMap ()).squaredNorm ();</span></div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;      <span class="keywordflow">if</span> (squared_distance &lt;= squared_radius)</div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;      {</div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;        k_indices.push_back (idx);</div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        k_sqr_distances.push_back (squared_distance);</div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;        <span class="comment">// already done ?</span></div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;        <span class="keywordflow">if</span> (k_indices.size () == max_nn)</div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;        {</div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;          <span class="keywordflow">if</span> (sorted_results_)</div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;            this-&gt;sortResults (k_indices, k_sqr_distances);</div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;          <span class="keywordflow">return</span> (max_nn);</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;        }</div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;      }</div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    }</div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;  }</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  <span class="keywordflow">if</span> (sorted_results_)</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    this-&gt;sortResults (k_indices, k_sqr_distances);  </div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  <span class="keywordflow">return</span> (<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (k_indices.size ()));</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a7a5330aaf077e0833d59b51b23144996"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7a5330aaf077e0833d59b51b23144996">&#9670;&nbsp;</a></span>setInputCloud()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void <a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html">pcl::search::OrganizedNeighbor</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::setInputCloud </td>
          <td>(</td>
          <td class="paramtype">const PointCloudConstPtr &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const IndicesConstPtr &amp;&#160;</td>
          <td class="paramname"><em>indices</em> = <code>IndicesConstPtr&#160;()</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Provide a pointer to the input data set, if user has focal length he must set it before calling this </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the const boost shared pointer to a <a class="el" href="classpcl_1_1_point_cloud.html" title="PointCloud represents the base class in PCL for storing collections of 3D points.">PointCloud</a> message </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>the const boost shared pointer to <a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;        {</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;          input_ = cloud;</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;          </div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;          <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a8ab81392a0445245244b1691bc39a0bb">mask_</a>.resize (input_-&gt;size ());</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;          input_ = cloud;</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;          indices_ = indices;</div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160; </div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;          <span class="keywordflow">if</span> (indices_.get () != NULL &amp;&amp; indices_-&gt;size () != 0)</div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;          {</div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;            <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a8ab81392a0445245244b1691bc39a0bb">mask_</a>.assign (input_-&gt;size (), 0);</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;            <span class="keywordflow">for</span> (std::vector&lt;int&gt;::const_iterator iIt = indices_-&gt;begin (); iIt != indices_-&gt;end (); ++iIt)</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;              <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a8ab81392a0445245244b1691bc39a0bb">mask_</a>[*iIt] = 1;</div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;          }</div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;            <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a8ab81392a0445245244b1691bc39a0bb">mask_</a>.assign (input_-&gt;size (), 1);</div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160; </div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;          <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#aa96cb00f7008977d98bab6d02cb6bbd6">estimateProjectionMatrix</a> ();</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;        }</div>
<div class="ttc" id="aclasspcl_1_1search_1_1_organized_neighbor_html_aa96cb00f7008977d98bab6d02cb6bbd6"><div class="ttname"><a href="classpcl_1_1search_1_1_organized_neighbor.html#aa96cb00f7008977d98bab6d02cb6bbd6">pcl::search::OrganizedNeighbor::estimateProjectionMatrix</a></div><div class="ttdeci">void estimateProjectionMatrix()</div><div class="ttdoc">estimated the projection matrix from the input cloud.</div><div class="ttdef"><b>Definition:</b> organized.hpp:337</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a3b5ab71f0bc6408d881070d7fa2ff7ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3b5ab71f0bc6408d881070d7fa2ff7ca">&#9670;&nbsp;</a></span>testPoint()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html">pcl::search::OrganizedNeighbor</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::testPoint </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>query</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>k</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::priority_queue&lt; <a class="el" href="structpcl_1_1search_1_1_organized_neighbor_1_1_entry.html">Entry</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>queue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>index</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>test if point given by index is among the k NN in results to the query point. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">query</td><td>query point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">k</td><td>number of maximum nn interested in </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">queue</td><td>priority queue with k NN </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>index on point to be tested </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>whether the top element changed or not. </dd></dl>
<div class="fragment"><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;        {</div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;          <span class="keyword">const</span> <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>&amp; point = input_-&gt;points [index];</div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a8ab81392a0445245244b1691bc39a0bb">mask_</a> [index] &amp;&amp; pcl_isfinite (point.x))</div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;          {</div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;            <span class="comment">//float squared_distance = (point.getVector3fMap () - query.getVector3fMap ()).squaredNorm ();</span></div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;            <span class="keywordtype">float</span> dist_x = point.x - query.x;</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;            <span class="keywordtype">float</span> dist_y = point.y - query.y;</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;            <span class="keywordtype">float</span> dist_z = point.z - query.z;</div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;            <span class="keywordtype">float</span> squared_distance = dist_x * dist_x + dist_y * dist_y + dist_z * dist_z;</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;            <span class="keywordflow">if</span> (queue.size () &lt; k)</div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;              queue.push (Entry (index, squared_distance));</div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (queue.top ().distance &gt; squared_distance)</div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;            {</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;              queue.pop ();</div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;              queue.push (Entry (index, squared_distance));</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;              <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// top element has changed!</span></div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;            }</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;          }</div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;          <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;        }</div>
<div class="ttc" id="astructpcl_1_1_point_x_y_z_r_g_b_a_html"><div class="ttname"><a href="structpcl_1_1_point_x_y_z_r_g_b_a.html">pcl::PointXYZRGBA</a></div><div class="ttdoc">A point structure representing Euclidean xyz coordinates, and the RGBA color.</div><div class="ttdef"><b>Definition:</b> point_types.hpp:540</div></div>
</div><!-- fragment -->
</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>search/include/pcl/search/<a class="el" href="organized_8h_source.html">organized.h</a></li>
<li>search/include/pcl/search/impl/<a class="el" href="organized_8hpp_source.html">organized.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>pcl</b></li><li class="navelem"><b>search</b></li><li class="navelem"><a class="el" href="classpcl_1_1search_1_1_organized_neighbor.html">OrganizedNeighbor</a></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
